// author:meizz
const moment = require('moment')
function formatDate(date, fmt) {
  var o = {
    'M+': date.getMonth() + 1, // 月份
    'd+': date.getDate(), // 日
    'h+': date.getHours(), // 小时
    'm+': date.getMinutes(), // 分
    's+': date.getSeconds(), // 秒
    'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
    'S': date.getMilliseconds() // 毫秒
  }
  if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
  for (var k in o) {
    if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
  }
  return fmt
}

function cut(content) {
  if (content.length > 20) {
    content = content.substring(0, 20) + '...'
  }
  return content
}

var filterPlugin = {}
filterPlugin.install = (Vue, options) => {
  // 日期格式化
  Vue.filter('date', (date, format) => {
    if (date && new Date(date).getTime() === new Date(date).getTime()) return formatDate(new Date(date), format || 'yyyy-MM-dd hh:mm:ss')
    return ''
  })
  // 在线状态
  Vue.filter('stateUtimeFmt', (value, format) => {
    if (!value) return '离线'
    let result = value >= moment().subtract(1, 'minute').valueOf() ? '在线' : '离线'
    if (result == "在线") { var supeo = 'supeo' } else { var supeo = '' }
    return result

  })

  // 支付类型
  Vue.filter('pay', (value, format) => {
    let r = {
      '1': '钱包',
      '2': '微信',
      '3': '支付宝',
      '4': '京东',
      '5': '百度'
    }
    return r[value]
  })
  // 数据状态
  Vue.filter('dataStateFmt', (value, format) => {
    let r = {
      '1': '空闲',
      '2': '被占用',
      '3': '解锁中',
      '4': '锁定中',
      '5': '管理员锁定'
    }
    return r[value]
  })
  // 项目状态格式化
  Vue.filter('parkStateFmt', (value, format) => {
    let r = {
      '1001': '空闲中',
      '1002': '占用中',
    }
    return r[value]
  })
  // 审核状态格式化
  Vue.filter('stateFmt', (value, format) => {
    let r = {
      '0': '待审核中',
      '1': '审核通过',
      '2': '审核不通过'
    }
    return r[value]
  })

  Vue.filter('cut', (content) => {
    return cut(content)
  })
  Vue.filter('browsePathFmt', (value) => {
    return process.env.WX_HOST + value
  })
  Vue.filter('transferStateFmt', (value) => {
    if (!value) return '未转化'
    return value == '1' ? '可转化' : '已转化'
  })
  Vue.filter('rolesFmt', (roles = []) => {
    return roles.map(x => x.name).join(',')
  })
}

module.exports = filterPlugin